<?php
include_once 'models/user/user_auth.php';
include_once 'handlers/user/_BaseAuthHandler.php';
/**
 * Хендлер смены пароля
 **/ 
class ChangePasswordHandler extends BaseAuthHandler{

  protected
    $user = false,
    $email = false,
    $action = false,
    $password = false,
    $newpassword_1 = false,
    $newpassword_2 = false;

  public function setParams($params){
    if (isset($params['userObj']) && !empty($params['userObj'])) $this->user = $params['userObj'];
    if (isset($params['action']) && !empty($params['action'])) $this->action = $params['action'];
    if (isset($params['password']) && !empty($params['password'])) $this->password = $params['password'];
    if (isset($params['newpassword_1']) && !empty($params['newpassword_1'])) $this->newpassword_1 = $params['newpassword_1'];
    if (isset($params['newpassword_2']) && !empty($params['newpassword_2'])) $this->newpassword_2 = $params['newpassword_2'];
  }

  public function process() {
    // получаем инфу о пользовательской авторизации
    $userAuth = UserAuthModel::getByUserID( $this->user->data['user_id'] );
    if( empty($userAuth) ) {
	// пишем ошибку в системный лог
	Logger::error('get user_auth failed!'.var_export($this, true));
	// завершаем работу, пишем инфу об ошибке юзеру
	WallrideError::add('сhangePasswordGlobalErrors', 'Учетная запись пользователя неопознана', 'ChangePasswordHandler');
	return false;
    } else {
      // получаем е-меил юзера
      $this->email = $userAuth->data['key1'];
      // проверяем были ли отправлены данные
      if( $this->action == 'change_pwd_post' ) {
	$result = true;
	// проверяем текущий пароль
	$old_enc_pwd = $this->getEncodedPassword();
	if( $old_enc_pwd != $userAuth->data['key2'] ) {
	  // старый пароль неверно указан
	  WallrideError::add('wrongPassword', 'Неверный пароль', 'ChangePasswordHandler');
	  $result = false;
	}
	// проверяем совпадение паролей
	if( !$this->isPasswordValid($this->newpassword_1) ) {
	  // неверный новый пароль
	  WallrideError::add('invalidPasswords', 'Введенный пароль некорректен', 'ChangePasswordHandler');
	  $result = false;
	}
	// проверяем совпадение паролей
	if( $this->newpassword_1 != $this->newpassword_2 ) {
	  // новые пароли не совпадают
	  WallrideError::add('invalidPasswords', 'Пароли не совпадают', 'ChangePasswordHandler');
	  $result = false;
	}
	// нужно ли менять пароль (не было ли ошибок)?
	if( $result == true ) {
	  // пытаемся поменять пароль в БД
	  $this->password = $this->newpassword_1;
	  $userAuth->data['key2'] = $this->getEncodedPassword();
	  //die($userAuth->data['key2']);
	  if( $userAuth->save() ) {
	    // подключаем класс для работы с почтой
	    include_once 'libraries/quickmail.php';
	    // пароль успешно поменян
	    $subject = 'Смена пароля';
	    $message = "Ваш новый пароль: {$this->password}\r\n\r\nMotivator";
	    QuickMail::send($userAuth->data['key1'], $subject, $message);
	  } else {
	    // пароль не поменян
	    WallrideError::add('сhangePasswordGlobalErrors', 'Ошибка сохранения изменений', 'ChangePasswordHandler');
	    $result = false;
	    // пишем ошибку в системный лог
	    Logger::error('user_auth save failed!'.var_export($userAuth, true));
	  }
	}
	// выдаем ответ
        return $result;
      } else {
	return false;
      }
    }


    /*
    echo '<pre>';
    var_dump($userAuth);
    echo '</pre>';
    die();


    //$user->data['key2'] = 'c18a1909d0c5d9c390a327b2df85b6xx';
    $user->data['key2'] = 'c18a1909d0c5d9c390a327b2df85b6cd';
    $r = $user->save();
    */
  }
}
?>
